#ifndef FIRSTWINDOW_H
#define FIRSTWINDOW_H

#include <QWidget>
#include <mainwindow.h>
#include "sersocket.h"
#include <QTime>
#include <QTimer>
#include <list_button.h>
#include <user.h>
#include <list>
#include <QMessageBox>
#include <QThread>
#include "user.h"

namespace Ui {
class firstwindow;
}

class firstwindow : public QWidget
{
    Q_OBJECT

public:
    explicit firstwindow(QWidget *parent = nullptr);

    void switchPage();
    ~firstwindow();

    void add_message(user* send_user, QString latest_message, QString latest_time);
    void show_me();

    void show_friends();
    void show_message();
    void show_groups();
    void show_search();

    bool eventFilter(QObject* obj, QEvent* event);//事件过滤

    QWidget * page_message=  nullptr;
    QWidget * page_friends = nullptr;
    QWidget * page_groups = nullptr;
    QWidget * page_search = nullptr;

    QVBoxLayout* message_playout;//消息的布局
    QLineEdit* nicknameLineEdit;//名字修改框
    QWidget* change_namewindow;//修改名字window

    //groupwindow * page_groups;
    //researchwindow * page_research;


private slots:
    void on_abutton_clicked();
    void on_bbutton_clicked();
    void on_cbutton_clicked();
    void on_dbutton_clicked();

    void on_namebutton_clicked();

    void up_date();
    void getUpdateMessage(const QJsonArray &msg_list);
    void getUpdateUserlist(const QJsonArray &user_list);
    void getUpdateFileLists(const QJsonArray &fmsg_list);

    void changeName();
    void deleteitself();

signals:
    // void onClicked();            //重载信号
    void sig_add(int i);
    void heart_jump(const QByteArray& uid);
    void ser_changerName(const QByteArray& data,const int cmd);
    void deleteItself(const QByteArray& info,const qint64& cmd);
private:
    Ui::firstwindow *ui;
    SerSocket *m_socket;
    QTimer* Clock;
    user* me;


    //void update_msgid(const int& mid);

};

#endif // FIRSTWINDOW_H
